package com.cn.wanxi.util;

import java.io.*;
import java.util.List;


/**
 * 为了不new对象
 * 需要 对当前这个对象设置 不能创建新对象
 * 单例模式：就是项目里面只存在一个当前对象
 * 单例模式的几种状态
 * 设计模式--23种，6大原则
 * 单例模式，工厂模式，策略模式，代理模式，观察者模式，
 */
public class IO {


    private IO() {
    }
//
//    private static IO io = new IO();
//
//    /**
//     * 懒汉模式
//     *
//     * @return
//     */
//    public static IO getLanHan() {
//        if (io == null) {
//            io = new IO();
//        }
//        return io;
//    }
//
//    /**
//     *
//     * @return
//     */
//    public static IO getEHan() {
//        return io;
//    }

    public static File createFile(String path, String fileName) {

        File directory = new File(path);
//        拿到路径--判断是否是文件或者文件夹，判断当前路径是否存在
        boolean isDirectory = directory.isDirectory();
        if (!isDirectory) {
            boolean mkdir = directory.mkdirs();
//            System.out.println(mkdir);
        }

        File file = new File(directory, fileName);
//        那个地方功能就写在响应的代码里面
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return file;
    }

    public static void write(List<String> list, File file) {

        try {
            OutputStream outputStream = new FileOutputStream(file);
            for (int i = 0; i < list.size(); i++) {
                outputStream.write(list.get(i).getBytes());
                outputStream.write("\n".getBytes());
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    public static String readNote(File file) {
        StringBuilder aa = new StringBuilder();
        try {
//            InputStream inputStream = new FileInputStream(file);
            Reader reader = new FileReader(file);
            int result = 0;
//            char[] aa = new char[(int) file.length()];
//            int index=0;
//            StringBuilder和StringBuffer和String的区别？

            while ((result = reader.read()) != -1) {
//                result = reader.read();
//                aa[index]=(char) result;
//                index++;
                aa.append((char) result);
            }
//            System.out.println(aa);
//            Arrays.toString(aa);
//            System.out.println(Arrays.toString(aa));
//       将char封装成数组 ：
//       数组元素的添加   速度？
//       list 的元素增加？

        } catch (IOException e) {
            e.printStackTrace();
        }
        return aa.toString();
    }
}
